#ifndef __CPP_SIDE_H__
#define __CPP_SIDE_H__

#if __cplusplus
extern "C" {
#endif

#include <stddef.h>

struct MlirContext;
struct MlirValue;

typedef struct MlirContext MlirContext;
typedef struct MlirValue MlirValue;

void mlirLoadToyDialect(MlirContext rawContext);
void *mlirScopedHashTableCreate();
void mlirScopedHashTableDestroy(void *scopedHashTable);
const void *mlirScopedHashTableScopeCreate(void *scopedHashTable);
void mlirScopedHashTableScopeDestroy(const void *scopedHashTableScope);
int mlirDeclare(void *scopedHashTable, const char *name, size_t length, MlirValue rawValue);
MlirValue mlirLookup(void *scopedHashTable, const char *name, size_t length);

#if __cplusplus
}
#endif

#endif
